/**
 * 公共js
 */
$.format = function(source, params) {
	if (arguments.length == 1)
		return function() {
			var args = $.makeArray(arguments);
			args.unshift(source);
			return $.format.apply(this, args);
		};
	if (arguments.length > 2 && params.constructor != Array) {
		params = $.makeArray(arguments).slice(1);
	}
	if (params.constructor != Array) {
		params = [ params ];
	}
	$.each(params, function(i, n) {
		source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n);
	});
	return source;
};

/**
 * pageType 1.首页2.上一页3.下一页4.末页 isgo
 */
/**
 * pageType 1.首页2.上一页3.下一页4.末页 isgo
 */
function go(pageNum) {
	if (!parseInt(pageNum) && parseInt(pageNum) != 0) {
		_alert("页数必须为数字！");
		return false;
	}
	var pagenumber = parseInt(pageNum);
	if (!pagenumber || pagenumber <= 0 || pagenumber > $("#_pages").text()) {
		_alert("请输入正确的页码");
		return false;
	}
	$("#pagenumber").val(pageNum);
	$("#pagenumberHidden").val(pageNum);
	
	bmsAjaxForm($("#frm"),{
		beforeSend:function(){
			showProccessBar();
		},
		success:function(data,textStatus){
			replaceDocument($("#frm").attr('action'),data);
		},
		error:function(){
			hideProccessBar();
		}
	});
}
/**
 * 是否为空
 * 
 * @param value
 * @returns {Boolean}
 */
function Is_Null(value) {
	var j = 0;
	var Text = "";
	Text = value;
	if (Text == undefined) {
		_alert('出错了',false);
		return;
	}
	if (Text.length) {
		for (var i = 0; i < Text.length; i++) {
			if (Text.charAt(i) != " ")
				j = j + 1;
		}

		if (j == 0) {
			Ret = true;
		} else {
			Ret = false;
		}
	} else
		Ret = true;
	return (Ret);
}

/**
 * 全选操作
 */
function selectAllCheckBox(obj, obj2, o) {
	var flag = '';
	if (obj == null) { // 无记录

		_alert("此页面没有可选择记录!");
		return false;
	} else if (obj.length == undefined) { // 只有一条记录

		if (obj.disabled == true) {
			_alert("此页面没有可选择记录!");
			return false;
		}
		if (o.checked) {
			$(obj).parent().addClass("ks-checked");
		} else {
			$(obj).parent().removeClass("ks-checked");
		}
		$(obj).prop("checked", o.checked);
	} else {// 存在多条记录
		for (var i = 0; i < obj.length; i++) {
			if (obj[i].disabled == false) {
				if (o.checked) {
					$(obj[i]).parent().addClass("ks-checked");
				} else {
					$(obj[i]).parent().removeClass("ks-checked");
				}
				$(obj[i]).prop("checked", o.checked);
				flag = '1';
			}
		}
		if (flag == '') {
			_alert("此页面没有可选择记录!");
			return false;
		}
	}
}

/**
 * 修改时调用方法（试用checkbox选择弹出窗口修改）
 */
function getIdByCheckBox(checkboxId) {
	obj = document.forms[0];
	var checks = obj.elements[checkboxId];
	if (!checks) {
		_alert("没有可选项！");
		return false;
	}
	if (!isSelectCheckbox(checks)) {
		_alert("请选择您要操作的条目！");
		return false;
	}
	if (checks.length == undefined) {
		return checks.value;
	} else {
		var num = 0;
		var returnID;
		for (var i = 0; i < checks.length; i++) {
			if (checks[i].checked) {
				returnID = checks[i].value;
				num++;
			}
		}
		if (num > 1) {
			_alert("一次只能处理一条记录！");
			return false;
		} else {
			return returnID;
		}
	}
}

// 清空表单数据
function clears() {
	$(":input").not(":button,:hidden,:submit").not("#isShow").val("");
}

/*
 * 函数名：chkSames 功能介绍：比较字段跟传入值是否相等 参数说明：要检查的字段id1，textValue，消息提醒message true：没有 false：有
 */
function chkSames(id, textValue, message) {
	var text = $("#" + id).val();
	if (text == textValue) {
		return false;
	} else {
		_alert(message, id, true);
		return true;
	}
}

/*
 * 函数名：chkNull 功能介绍：验证是否为空 参数说明：要检查的字段id，消息提醒message true：没有 false：有
 */
function chkNull(id, message) {
	var text = $("#" + id).val();
	if (Is_Null(text)) {
		_alert(message);
		return true;
	}
	return false;
}
/*
 * 函数名：chkEmail 功能介绍：检查是否为Email 参数说明：要检查的字段id，消息提醒message true：没有 false：有
 */
function chkEmail(id, message) {
	var text = $("#" + id).val();
	if (chkemail(text, message) == 0) {
		jbox.alert(message, id, true);
		return true;
	} else {
		return false;
	}
}

// 除去字符串中指定的字符串
// example: str="12,34,56.00",symbol=",", replaceAll(str,symbol)=123456.00
function replaceAll(str, symbol) {

	while (str.indexOf(symbol) != -1) {
		str = str.replace(symbol, "");
	}
	return str;
}

// 比较两个日期的大小

// 目前只支持年－月－日这样的格式
function compareDate(endDate, beginDate) {
	var OneMonth = beginDate.substring(5, beginDate.lastIndexOf("-"));
	var OneDay = beginDate.substring(beginDate.length, beginDate
			.lastIndexOf("-") + 1);
	var OneYear = beginDate.substring(0, beginDate.indexOf("-"));

	var TwoMonth = endDate.substring(5, endDate.lastIndexOf("-"));
	var TwoDay = endDate
			.substring(endDate.length, endDate.lastIndexOf("-") + 1);
	var TwoYear = endDate.substring(0, endDate.indexOf("-"));

	if (Date.parse(OneMonth + "/" + OneDay + "/" + OneYear) <= Date
			.parse(TwoMonth + "/" + TwoDay + "/" + TwoYear)) {
		return true;
	} else {
		return false;
	}
}
/**
 * 删除操作 url 跳转所用url formname form表单的name
 */
function del(formId, _url, msg) {
	if (!formId) {
		return
	}
	
	if (!_url){
		return;
	}

	if ($("#" + formId + " input[name='ids']").length <= 0) {
		_alert("没有可选项");
		return false;
	}

	if ($("#" + formId + " input[name='ids']:checked").length <= 0) {
		_alert("请选择您要删除的记录");
		return false;
	}

	if (!msg) {
		msg = '是否删除所选记录';
	}
	msg = "<span style='color:#FE6600'>" + msg + "</span>";
	_confirm(msg, function() {
		var $form = $("#" + formId);
		var $oldaction = $form.attr('action');
		bmsAjaxForm($form , {
			url:_url,
			success:function(data,textStatus){
				if(data){
					$.go($oldaction,{
						beforeSend:function(){
							showProccessBar();
						},
						success:function(data2,textStatus){
							replaceDocument($oldaction,data2);
						},
						error:function(){
							hideProccessBar();
						}
					});
				}
			}
		});
	});
}

/**
 * 校验多选框的选择
 */
function isSelectCheckbox(ids) {
	if (ids.length == "-1" || typeof (ids.length) == "undefined")
		return ids.checked;
	for (i = 0; i < ids.length; i++) {
		if (ids[i].checked) {
			return true;
		}
	}
	return false;
}

// 输入框错误提示样式
var inputError = function(id) {
	clearTimeout(inputError.timer);
	var num = 0;
	var fn = function() {
		inputError.timer = setTimeout(function() {
			if ($("#" + id).css("borderColor") == '#3aa1f2') {
				$("#" + id).css("borderColor", "#fe6600");
			} else {
				$("#" + id).css("borderColor", "#3aa1f2");
			}
			if (num === 5) {
				$("#" + id).css("borderColor", "#3aa1f2");
				$("#" + id).blur(function() {
					$("#" + id).css("borderColor", "#fff");
				})
				$("#" + id).focusin(function() {
					$("#" + id).css("borderColor", "#3aa1f2");
				})
				$("#" + id).mouseover(function() {
					if ($("#" + id).css("borderColor") == '#3aa1f2') {
						return;
					}
					$("#" + id).css("borderColor", "#B2DBF8");
				})
				$("#" + id).mouseout(function() {
					if ($("#" + id).css("borderColor") == '#3aa1f2') {
						return;
					}
					$("#" + id).css("borderColor", "#fff");
				})
			} else {
				fn(num++);
			}
			;
		}, 150);
	};
	fn();
};

/** fileUrl - 文件下载地址， fileDisplayName 下载文件的显示名称 */
var downloadFile = function(action, fileUrl, fileDisplayName) {
	if (!action) {
		action = 'fileDownload.ht';
	}
	$.ajax({
		url : action,
		data : {
			fileUrl : fileUrl,
			fileName : fileDisplayName
		},
		success : function(data) {
			if (data.code == 1) {
				_alert(data.message);
			} else {
				window.location.href = action + "?fileUrl=" + fileUrl
						+ "&fileName=" + fileDisplayName;
			}
		}
	});
	return false;
};

/**
 * 
 * @Title: checkReg 传入正则表达式 验证结果是否满足
 * @Description: TODO
 * @param
 * @param reg
 *            正则表达式
 * @param
 * @param msg
 *            提醒信息
 * @param
 * @param checkval
 *            待验证的值
 * @return void 返回类型
 * @throws
 */
function checkReg(reg, msg, checkval) {
	if (msg == null || msg == '' || msg == undefined) {
		msg = '参数检验不正确';
	}
	if (!reg.test(checkval)) {
		_alert(msg);
		return true;
	}
	return false;
}

function _alert(msg, fnc , isNotHideProccessBar) {
	if (fnc) {
		top.layer.msg(msg, {
			icon : 1,
			anim : 0,
			time : 2000
		}, fnc);
	} else {
		top.layer.msg(msg, {
			icon : 5,
			anim : 6,
			time : 2000
		});
	}
	if(!isNotHideProccessBar){
		hideProccessBar();
	}
}

function _confirm(msg, success) {
	var lock = false;
	var fnc = function(index) {
		if(!lock){
			lock = true;
			success();
			top.layer.close(index);
		}
	};
	top.layer.confirm(msg, {
		icon : 3,
		title : '温馨提示'
	}, fnc);
}
/**
 * 
 * @param msg
 * @param idOrClass
 *            #{id} 或者 .{class}
 * @return
 */
function _tip(msg, idOrClass) {
	layer.tips(msg, idOrClass);
}

function showUploadTip(url, buttonDiv) {
	if (url) {
		$("#" + buttonDiv + "-button").css({
			'background' : 'url("' + url + '") no-repeat center center',
			'background-size' : 'cover'
		});
	}
}
/**
 * 打开一个指定大小的窗体
 */
var jbox = {
	open : function(url, title, iWidth, iHeight, id , func) {
		if (!id) {
			id = 'jbox_ifr_' + new Date().getTime();
		}
		if (document.getElementById("query") != undefined) {
			setData("query", $("#query"));// query为列表查询按钮的id值，目的是用他来对按钮触发onclick操作
			removeData("reflush");// 每次打开时清除共享区域reflush对象
		}
		
		$.go(url,{
			dataType:'html',
			beforeSend:function(){
				showProccessBar();
			},
			success:function(data,textstatus){
				var ifrId = id;
				var ifrHTML = '<iframe height="100%" width="100%" src="about:blank" scrolling="auto" frameborder="no" border="0" style="margin:0;padding:0;border-width:0;" id="' + ifrId + '"></iframe>';
				var layerIndex = layer.open({
					offset : '100px',
					type : 1,
					title : title,
					shadeClose : false,
					shade : 0.3,
					move:false,
					scrollbar:false,
					maxmin : true, // 开启最大化最小化按钮
					area : [ (iWidth || '950px'), (iHeight||'650px') ],
					content : ifrHTML ,
					end : function(){
						if(func){
							func();
						}
						hideProccessBar();
					}
				});
				// 添充内容
				if(document.getElementById(ifrId) && document.getElementById(ifrId).parentNode){
					document.getElementById(ifrId).parentNode.style.overflow='hidden';
				}
				var ifrDoc = document.getElementById(ifrId).contentWindow.document;
				ifrDoc.LAYER_INDEX = layerIndex;
				
				replaceDocument(url , data , ifrDoc);
				hideProccessBar();
			},
			error:function(){
				hideProccessBar();
			}
		});
		/**
		 * layer.open({ offset : '100px', type : 2, title : title, shadeClose : true, shade : false, move : false, maxmin : true, // 开启最大化最小化按钮 area : [ (iHeight || '950px'), (iWidth || '650px') ], content : url, end : function() { hideProccessBar(); } });
		 */
	}
};

function showDialog(obj) {
	var $obj = $("#" + obj);
	$obj.css({display:'block'});
	
	var defaultTop = 0-$(window).height();
	var objTop = ($(window).height() - $obj.find('.pop-box').height())/2;
	$obj.find('.pop-box').css({
		top:defaultTop
	});
	$obj.find('.pop-box').animate({
		top:objTop
	});
	$(window).resize(function(){
		var objTop = ($(window).height() - $obj.find('.pop-box').height())/2;
		$obj.find('.pop-box').animate({
			top:objTop
		});
	});
	
}

function closeDialog(obj) {
	$("#" + obj).clearForm(true);
	$("#" + obj).css("display", "none");
}

function strToDate(value) {
	var curDate;
	if (value.indexOf("-") > -1) {
		var TwoMonth = value.substring(5, value.lastIndexOf("-"));
		var TwoDay = value.substring(value.length, value.lastIndexOf("-") + 1);
		var TwoYear = value.substring(0, value.indexOf("-"));
		curDate = Date.parse(TwoMonth + "/" + TwoDay + "/" + TwoYear);
	} else {
		var year = value.substring(0, 4);
		var month = value.substring(4, 6);
		var day = Math.round(value.substring(6, 8)) + 1;
		curDate = Date.parse(month + "/" + day + "/" + year);
	}
	return curDate;
}

function dateToStr(date) {
	var day = date.getDate();
	var month = date.getMonth() + 1;
	var year = date.getFullYear();
	return year + "-" + month + "-" + day;
}

function changePwd(obj, frm) {
	var _str = $("input[name='oldPassword']").val();
	var _str1 = $("input[name='newPassword']").val();
	var _str2 = $("input[name='checkPassword']").val();
	if (_str == null || _str == "") {
		_alert("请输入原密码");
		return false;
	}
	if (!BmsValidata.prototype.isPassword(_str1)) {
		_alert("密码由字母，数字组成，请重新输入新密码");
		return false;
	}
	if (!checkPwdLength(_str1)) {
		_alert("请确认，新密码长度6-20位");
		return false;
	}
	if (!BmsValidata.prototype.isPassword(_str2)) {
		_alert("密码为字母，数字组成，请重新输入确认密码");
		return false;
	}
	if (!checkPwdLength(_str2)) {
		_alert("请确认，确认密码长度6-20位");
		return false;
	}
	bmsAjaxForm($("#" + frm), {
		dataType:'json',
		success : function(data,textStatus,xhr) {
			if (data.code == '0'){
				_alert(data.message,true);
				closeDialog(obj);
			}else{
				_alert(data.message,false);
			}
		}
	});
}

function checkPwdLength(str) {
	if (str == null || str == "")
		return false;
	else {
		if (str.length < 6 || str.length > 20)
			return false;
		else
			return true;
	}
}
function checkDate(endDate, beginDate) {
	if (endDate == null || beginDate == null) {
		return false;
	}
	var OneMonth = beginDate.substring(5, beginDate.lastIndexOf("-"));
	var OneDay = beginDate.substring(beginDate.length, beginDate
			.lastIndexOf("-") + 1);
	var OneYear = beginDate.substring(0, beginDate.indexOf("-"));

	var TwoMonth = endDate.substring(5, endDate.lastIndexOf("-"));
	var TwoDay = endDate
			.substring(endDate.length, endDate.lastIndexOf("-") + 1);
	var TwoYear = endDate.substring(0, endDate.indexOf("-"));

	if (Date.parse(OneMonth + "/" + OneDay + "/" + OneYear) <= Date
			.parse(TwoMonth + "/" + TwoDay + "/" + TwoYear)) {
		return true;
	} else {
		return false;
	}
}

function equal(objA, objB) {
	if (typeof arguments[0] != typeof arguments[1])
		return false;
	// 数组
	if (arguments[0] instanceof Array) {
		if (arguments[0].length != arguments[1].length)
			return false;

		var allElementsEqual = true;
		for (var i = 0; i < arguments[0].length; ++i) {
			if (typeof arguments[0][i] != typeof arguments[1][i])
				return false;

			if (typeof arguments[0][i] == 'number'
					&& typeof arguments[1][i] == 'number')
				allElementsEqual = (arguments[0][i] == arguments[1][i]);
			else
				allElementsEqual = arguments.callee(arguments[0][i],
						arguments[1][i]); // 递归判断对象是否相等
		}
		return allElementsEqual;
	}

	// 对象
	if (arguments[0] instanceof Object && arguments[1] instanceof Object) {
		var result = true;
		var attributeLengthA = 0, attributeLengthB = 0;
		for ( var o in arguments[0]) {
			// 判断两个对象的同名属性是否相同（数字或字符串）
			if (typeof arguments[0][o] == 'number'
					|| typeof arguments[0][o] == 'string')
				result = eval("arguments[0]['" + o + "'] == arguments[1]['" + o
						+ "']");
			else {
				// 如果对象的属性也是对象，则递归判断两个对象的同名属性
				// if (!arguments.callee(arguments[0][o], arguments[1][o]))
				if (!arguments.callee(eval("arguments[0]['" + o + "']"),
						eval("arguments[1]['" + o + "']"))) {
					result = false;
					return result;
				}
			}
			++attributeLengthA;
		}

		for ( var o in arguments[1]) {
			++attributeLengthB;
		}
		// 如果两个对象的属性数目不等，则两个对象也不等
		if (attributeLengthA != attributeLengthB)
			result = false;
		return result;
	}
	return arguments[0] == arguments[1];
}

$(function(){
	$(window).resize(function(){
		if(window.top == window.self){
			var promotionHeight = $("#promotion_index")?$("#promotion_index").height():0;
			var tabTitleHeight = $(".tabs-header .tabs").height();
			var height = $(window).height();
			var headerHeight = $("#header").height();
			// 首页，滚动插件
			// $("div.icip_slide_box.JsW").height(height - headerHeight -
			// tabTitleHeight - promotionHeight);
			// iframe高度重置
			$(".tabs-iframe").each(function(index , e){
				$(e).attr('height',height - headerHeight - tabTitleHeight - promotionHeight - 30 );
				$(e).parent().css('height',height - headerHeight - tabTitleHeight - promotionHeight);
				$(e).parent().css('overflow-y','hidden');
			});
		}
	});
});

var _IFR_ID = 1;
function addTabs(url, title) {
	// 如果新打开的标签页已经存在,则选中该标签页而不是重新打开一个
	if ($("#tab-menus").tabs("exists", title)) {
		$("#tab-menus").tabs("select", title);
		return;
	}

	// 如果url为空。则不处理
	if (!url) {
		return;
	}

	tab_is_new = true;
	var menubox = $(".menu-box").eq(0);
	var height = (menubox.height() - 26) + 'px';
	
	// 计算标题
	var showTitle = title;
	if (showTitle.length > 10) {
		showTitle = showTitle.substring(0, 8) + "...";
	}

	showProccessBar();
	
	var ifrId = 'ifr' + _IFR_ID++;
	// 创建iframe
	var $ifr = $('<iframe></iframe');
	$ifr.attr('height', height);
	$ifr.attr('width', '100%');
	$ifr.attr('src', 'about:blank');
	$ifr.attr('scrolling', 'auto');
	$ifr.attr('frameborder', 'no');
	$ifr.attr('id', ifrId);

	$ifr.addClass("tabs-iframe");
	
	$("#tab-menus").tabs("add", {
		plain:true,
		wholeTitle : title,
		url:url,
		title : showTitle,
		fit:true,
		selected : true,
		closable : true,
		cache : false,
		content : function() {
			return $ifr;
		}
	});

	$.go(url,{
		dataType:'html',
		success:function(data,textStatus){
			// var ifrDoc = window.document.getElementById(ifrId).contentWindow.document;
			var ifrDoc = $ifr[0].contentWindow.document;
			replaceDocument(url, data, ifrDoc);
			hideProccessBar();
		},
		error:function(xhr,textStatus,errorThrown){
			hideProccessBar();
			closeTab();
		}
	});
	navigation(url, title);
	return;
	
	/*
	 * $.go(url,{ dataType : 'html', success : function(data, textStatus) { var ifrDoc = window.document.getElementById(ifrId).contentWindow.document; replaceDocument(url, data, ifrDoc); setTimeout(function(){ hideProccessBarNoClose(); },100); }, error : function(XMLHttpRequest, textStatus, errorThrown) { setTimeout(function(){ closeTab(); hideProccessBarNoClose(); },300); } });
	 */
}
/**
 * author 打开一个新的标签页，如果该标签页已经打开,则关闭后重新打开。
 * 
 * @param url
 * @param title
 */
function addNewTabs(url, title) {
	if ($('#tab-menus').tabs('exists', title)) {
		$('#tab-menus').tabs('select', title);
		closeTab();
	}
	addTabs(url, title);
}

function navigation(url, title) {
	var rootMenu = $(".ks-show").find(".dd-title-nav").html();
	if (window.localStorage) {
		localStorage.setItem("currentMenu", rootMenu);
		localStorage.setItem("currentNodeMenu", title);
		localStorage.setItem("nodeUrl", url);
	} else {
		setCookie("currentMenu", rootMenu);
		setCookie("currentNodeMenu", title);
		setCookie("nodeUrl", url);
	}

}

function setCookie(name, value) {
	var Days = 1;
	var exp = new Date();
	exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
	document.cookie = name + "=" + escape(value) + ";expires="
			+ exp.toGMTString();
}

function getCookie(name) {
	var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
	if (arr = document.cookie.match(reg))
		return unescape(arr[2]);
	else
		return null;
}

function addTabs2(url, title) {
	var newUrl = "";
	if (url.toUpperCase().startWith("HTTP:")
			|| url.toUpperCase().startWith("HTTPS:")) {
		newUrl = url;
	} else {
		newUrl = location.protocol
				+ "//"
				+ location.hostname
				+ ((location.port == 80 || location.port == '') ? ""
						: (":" + location.port)) + "" + url;
	}
	addTabs(newUrl, title);
}

function closeCurrentAndOpenNew(url, title) {
	closeTab();
	// 关闭title对应的标签页
	if ($('#tab-menus').tabs('exists', title)) {
		$('#tab-menus').tabs('select', title);
		closeTab();
	}
	addTabs(url, title);
}

function closeTab() {
	/*
	 * console.dir(window.parent); console.log(window.parent.document.getElementById("easyui-tabs"));
	 */
	// var tab = $(window.top.document).find("#tab-menus").tabs("getSelected");
	var tab = window.top.$('#tab-menus').tabs("getSelected");
	var index = window.top.$('#tab-menus').tabs("getTabIndex", tab);
	$("li.item").find("div:contains(" + tab.title + ")").removeClass(
			"ks-hover-active ks-itme-active");
	window.top.$('#tab-menus').tabs("close", index);
}

var showProccessBar = function() {
	// $(window.top.document).find("#_proccesBar").css("visibility", "visible");
	var top = document.documentElement.clientHeight / 2 - 70;
	$(".load-pop-box").css("top", top);
	var bar = $(window.top.document).find("#_proccesBar");
	if (bar.is(':hidden'))
		bar.css("display", "block");
};

var showProccessBarNoClose = function() {
	var top = document.documentElement.clientHeight / 2 - 70;
	$(".load-pop-box").css("top", top);
	var bar = $(window.top.document).find("#_proccesBar_no_close");
	if (bar.is(':hidden'))
		bar.css("display", "block");
};

var hideProccessBarNoClose = function() {
	if(window.top.document){
		var bar = $(window.top.document).find("#_proccesBar_no_close");
		if (!bar.is(':hidden'))
			bar.hide();
	}
};

var hideProccessBar = function() {
	// $(window.top.document).find("#_proccesBar").css("visibility", "hidden");
	if(window.top.document){
		var bar = $(window.top.document).find("#_proccesBar");
		if (!bar.is(':hidden')){
			bar.hide();
		}
	}
};

function formatRepo(repo) {
	if (repo.loading)
		return repo.text;
	var markup = "<option value='" + repo.id + "' >" + repo.name + "</option>";
	return markup;
}

function formatRepoSelection(repo) {
	$("input[name='pcid']").val(repo.id);
	return repo.name;
}

/**
 * select2控件封装
 * 
 * @param id
 *            加载select2的id
 * @param url
 *            请求数据的地址，可拼接查询参数
 * @param title
 *            初始化时下拉框的显示，如：请选择小区。
 * @param name
 *            得到下拉框的显示值。
 * @param flag
 *            是否有清除文本功能,默认没有
 */
function initObjectSelect2(id,url,title,name,flag) {
	if(flag == undefined){
		flag = false;
	}
	$("#"+id).select2({
	    placeholder:title,
	    language: "zh-CN",
	    allowClear : flag,
	    ajax: {
	        url: url,
	        dataType: 'json',
	        delay: 250,
	        data: function (param) {
	            return {
	                search : param.term,// 输入的内容，会发给服务器进行查找
	                // 以下两行可以在数据量大的时候用到（当下拉框往下拉的时候会加载下一页），数据量不大的时候，可以直接注释
	                page : param.page || 1, // 当前页
	                showAllItem : true
	             };
	         },
	         processResults: function (data, param) {
	        	 param.page = data.pageNum;
	            return {
	                results: data.list ,
	                pagination: {
	                	more : data.hasNextPage
	                  }
	            };
	        }
	      },
	    escapeMarkup: function (markup) { return markup; }, 
	    // minimumInputLength: 1,
	    templateResult: formatRepo, // 显示查询结果
	    templateSelection: function(obj) {
		    if(name){
		    	$("#"+name).val(obj.name||obj.text);
		    }
	    	return obj.name||obj.text;
	    }    
	});
}

/**
 * select2公司控件封装，一条数据显示文本框，多条下拉框显示
 * 
 * @param id
 *            select2控件ID
 * @param url
 *            远程加载数据url
 * @param objFunction
 *            可执行的方法
 * @param nameId
 *            文本框name
 * @param flag
 *            是否显示下拉框清除文本功能，默认无
 */
function initCompanySelect2(id, url) {
	$("#" + id).select2({
		placeholder : "请选择物业公司",
		language : "zh-CN",
		ajax : {
			url : url,
			dataType : 'json',
			delay : 250,
			data : function(param) {
				if (document.isDebug) {
					console.log(param.term);
				}
				return {
					search : param.term,// 输入的内容，会发给服务器进行查找
					// 以下两行可以在数据量大的时候用到（当下拉框往下拉的时候会加载下一页），数据量不大的时候，可以直接注释
					page : param.page || 1
				// 当前页
				};
			},
			processResults : function(data, param) {
				param.page = data.pageNum;
				return {
					results : data.list,
					pagination : {
						more : data.hasNextPage
					}
				};
			}
		},
		escapeMarkup : function(markup) {
			return markup;
		},
		// minimumInputLength: 1,
		templateResult : formatRepo, // 显示查询结果
		templateSelection :  function(repo){
			return repo.name || repo.text;
		}// 显示选中的对象
	});
}

function initObjName(id,nameId,text) {
	var hidnameId=$("#"+nameId);
	if(hidnameId.val()!=undefined){
		hidnameId.val(text);
	}else{
		$("#"+id).parent().append('<input type="hidden" value="'+text+'" name="'+nameId+'" id="'+nameId+'"/>');
	}
}

/**
 * 根据公司初始化小区下拉控件
 * 
 * @param id1
 *            公司控件ID
 * @param id2
 *            小区控件ID
 * @param url
 *            远程加载数据URL
 * @param flag
 *            是否有清除文本功能，默认无
 */
function initCommunitySelect2ByCompany(id1, id2, url) {
	var companyId = $("#" + id1).val();
	$("#" + id2).select2({
		placeholder : "请选择小区",
		language : "zh-CN",
		ajax : {
			url : url,
			dataType : 'json',
			delay : 250,
			data : function(param) {
				if (document.isDebug) {
					console.log(param.term);
				}
				return {
					search : param.term,// 输入的内容，会发给服务器进行查找
					pcid : companyId,
					// 以下两行可以在数据量大的时候用到（当下拉框往下拉的时候会加载下一页），数据量不大的时候，可以直接注释
					page : param.page || 1
				// 当前页
				};
			},
			processResults : function(data, param) {
				param.page = data.pageNum;
				return {
					results : data.list,
					pagination : {
						more : data.hasNextPage
					}
				};
			}
		},
		escapeMarkup : function(markup) {
			return markup;
		},
		// minimumInputLength: 1,
		templateResult : formatRepo, // 显示查询结果
		templateSelection : function(repo){
			return repo.name || repo.text;
		}// 显示选中的对象
	});
}


function initCommunitySelect2(id, url , func , isAllowClear) {
	$("#" + id).select2({
		language : "zh-CN",
		placeholder : "请选择小区",
		allowClear: isAllowClear?true:false,
		ajax : {
			url : url,
			dataType : 'json',
			delay : 250,
			data : function(param) {
				if (document.isDebug) {
					console.log(param.term);
				}
				return {
					search : param.term,// 输入的内容，会发给服务器进行查找
					// 以下两行可以在数据量大的时候用到（当下拉框往下拉的时候会加载下一页），数据量不大的时候，可以直接注释
					page : param.page || 1, // 当前页
					showAllItem : true
				};
			},
			processResults : function(data, param) {
				param.page = data.pageNum;
				return {
					results : data.list,
					pagination : {
						more : data.hasNextPage
					}
				};
			}
		},
		escapeMarkup : function(markup) {
			return markup;
		},
		// minimumInputLength: 1,
		templateResult : formatRepo, // 显示查询结果
		templateSelection : function(repo){
			try{
				if(func && typeof func == 'function'){
					func();
				}else{
					func;
				}
			}catch(err){
				console.log("select2插件初始化出错" + err);
			}
			return repo.name || repo.text;
		} // formatRepoSelection// 显示选中的对象
	});
}

/**
 * 表格删除,gridObj=表格对象，delUrl=删除地址，pkId=主键对象
 */
function deleteTabByAjax(gridObj, delUrl, pkId) {
	_confirm("<span style='color:#FE6600'>确认删除？</span>", function() {
		var records = gridObj.getCheckedRowsRecords();
		var arr = [];
		for (var i = 0; i < records.length; i++) {
			var pk = gridObj.getRecordIndexValue(records[i], pkId);
			if (pk) {
				arr.push(pk);
			}
		}
		var idx = gridObj.getCheckedRowsIndexs();
		var ids = arr.join(",");

		if (ids.length == 0) {
			if (idx.length > 0) {
				for (var i = idx.length - 1; i >= 0; i--) {
					var index = idx[i];
					try {
						$(gridObj.getRow(index)).attr('title', '');
						$(gridObj.getRow(index)).poshytip("destroy");
					} catch (e) {
					}
					gridObj.deleteRow(index);
					// gridObj.getAllRecords()[index] = null;
				}
				return false;
			} else {
				return false;
			}
		}
		$.ajax({
			url : delUrl,
			data : {
				ids : ids
			},
			success : function(data) {
				var code = data.code;
				if (code == message_false_code) {
					_alert(data.message);
					return;
				} else {
					for (var i = idx.length - 1; i >= 0; i--) {
						var index = idx[i];
						try {
							$(gridObj.getRow(index)).attr('title', '');
							$(gridObj.getRow(index)).poshytip("destroy");
						} catch (e) {
						}
						gridObj.deleteRow(index);
						// gridObj.getAllRecords()[index] = null;
					}
					_alert(data.message);
				}
			}
		});
	});
}

function editTabAjax(editUrl, arr, back) {
	$.ajax({
		url : editUrl,
		data : JSON.stringify(arr),
		type : "post",
		dataType : "json",
		contentType : "application/json",
		success : function(data) {
			var code = data.code;
			if (code == message_false_code) {
				_alert(data.message);
				return false;
			} else {
				var result = data.result;
				// 成功的
				$.each(result, function(key, object) {
					if (!object._sucflag && object._sucflag == 0) {
						var red = gridObj.getRecord(object._idx);
						red._sucflag = object._sucflag;
						$.extend(red, object);
						// 移除更改样式
						$(gridObj.getRow(object._idx)).each(function() {
							$(this).removeClass("bsgrid_editgrid_change")
						})
						gridObj.getRow(object._idx).data("change");

						$(gridObj.getRow(object._idx)).attr('title', '');
						$(gridObj.getRow(object._idx)).poshytip("destroy");
						// 刷新
						gridObj.refshTable();
						return;
					}
				})
				$.each(result, function(key, object) {
					if (!object._sucflag && object._sucflag == 0) {
						return;
					}
					// 失败的
					var red = gridObj.getRecord(object._idx);
					red._sucflag = object._sucflag;
					$.extend(red, object);
					$(gridObj.getRow(object._idx)).attr('title', object._msg);
					$(gridObj.getRow(object._idx)).poshytip({
						className : 'tip-darkgray',
						alignTo : 'target',
						alignX : 'center',
						offsetY : 5,
						allowTipHover : false,
						showTimeout : 1
					});
					$(gridObj.getRow(object._idx)).mouseenter();
				})
				try {
					back(data);
				} catch (e) {
				}
			}
		}
	});
}

function disabledTrue(id) {
	$("#"+id).attr("disabled",true);
}

function disabledFalse(id) {
	$("#"+id).attr("disabled",false);
}

// 增加对象转移辅助
(function($) {
	$.fn.serializeJson = function() {
		var serializeObj = {};
		$(this.serializeArray()).each(function() {
			serializeObj[this.name] = this.value;
		});
		return serializeObj;
	};
})(jQuery);
